package 并发编程12.CountDownLatch模块;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;

/**
 * @author idea
 * @data 2019/1/28
 */
public class Test {

    public static void main(String[] args) throws InterruptedException {
        Service service=new Service();
        CountDownLatch begin=new CountDownLatch(1);
        //如果设置的countdownLatch过多，那么总线程就会一直不开始，如果数量过少，则只会对部分线程有效
        CountDownLatch end=new CountDownLatch(10);
        MyThread[] threadArray=new MyThread[10];
        for(int i=0;i<10;i++){
            threadArray[i]=new MyThread(service,begin,end);
            threadArray[i].setName(i+"号选手");
            threadArray[i].start();
            System.out.println(begin.getCount());
        }
        System.out.println("等待裁判员开枪！"+System.currentTimeMillis());
        long t1=System.currentTimeMillis();
        //开始执行线程 堵塞主线程
        begin.countDown();
        //等待10个子线程执行完毕之后再执行,如果不想一直等待，可以设置时间
        end.await();
        System.out.println("比赛结束，时间为："+System.currentTimeMillis());
    }
}
